/**
 * 文件类型图标组件
 */



interface FileTypeIconProps {
  fileType: string;
  size?: 'sm' | 'md' | 'lg';
  className?: string;
}

// 文件类型配置
const fileTypeConfig: Record<string, { icon: string; color: string; bgColor: string }> = {
  // 文档类型
  pdf: { icon: '📄', color: '#dc3545', bgColor: '#fef2f2' },
  doc: { icon: '📝', color: '#2b579a', bgColor: '#eff6ff' },
  docx: { icon: '📝', color: '#2b579a', bgColor: '#eff6ff' },
  txt: { icon: '📄', color: '#6b7280', bgColor: '#f9fafb' },
  md: { icon: '📝', color: '#6b7280', bgColor: '#f9fafb' },
  rtf: { icon: '📝', color: '#6b7280', bgColor: '#f9fafb' },
  
  // 表格类型
  xls: { icon: '📊', color: '#16a34a', bgColor: '#f0fdf4' },
  xlsx: { icon: '📊', color: '#16a34a', bgColor: '#f0fdf4' },
  ods: { icon: '📊', color: '#16a34a', bgColor: '#f0fdf4' },
  
  // 演示文稿
  ppt: { icon: '📽️', color: '#ea580c', bgColor: '#fff7ed' },
  pptx: { icon: '📽️', color: '#ea580c', bgColor: '#fff7ed' },
  odp: { icon: '📽️', color: '#ea580c', bgColor: '#fff7ed' },
  
  // 图片类型
  jpg: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  jpeg: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  png: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  gif: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  bmp: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  svg: { icon: '🖼️', color: '#7c3aed', bgColor: '#faf5ff' },
  
  // 压缩文件
  zip: { icon: '🗜️', color: '#ca8a04', bgColor: '#fffbeb' },
  rar: { icon: '🗜️', color: '#ca8a04', bgColor: '#fffbeb' },
  '7z': { icon: '🗜️', color: '#ca8a04', bgColor: '#fffbeb' },
  tar: { icon: '🗜️', color: '#ca8a04', bgColor: '#fffbeb' },
  gz: { icon: '🗜️', color: '#ca8a04', bgColor: '#fffbeb' },
  
  // 默认类型
  default: { icon: '📄', color: '#6b7280', bgColor: '#f9fafb' },
};

const sizeConfig = {
  sm: { container: 'w-6 h-6', text: 'text-xs' },
  md: { container: 'w-8 h-8', text: 'text-sm' },
  lg: { container: 'w-12 h-12', text: 'text-lg' },
};

export default function FileTypeIcon({ fileType, size = 'md', className = '' }: FileTypeIconProps) {
  const config = fileTypeConfig[fileType.toLowerCase()] || fileTypeConfig.default;
  const sizeClasses = sizeConfig[size];

  return (
    <div
      className={`${sizeClasses.container} rounded-lg flex items-center justify-center flex-shrink-0 ${className}`}
      style={{ 
        backgroundColor: config.bgColor,
        color: config.color,
      }}
      title={`${fileType.toUpperCase()} 文件`}
    >
      <span className={sizeClasses.text}>{config.icon}</span>
    </div>
  );
}

// 获取文件类型颜色的工具函数
export function getFileTypeColor(fileType: string): string {
  const config = fileTypeConfig[fileType.toLowerCase()] || fileTypeConfig.default;
  return config.color;
}

// 获取文件类型背景色的工具函数
export function getFileTypeBgColor(fileType: string): string {
  const config = fileTypeConfig[fileType.toLowerCase()] || fileTypeConfig.default;
  return config.bgColor;
}

// 获取文件类型图标的工具函数
export function getFileTypeIcon(fileType: string): string {
  const config = fileTypeConfig[fileType.toLowerCase()] || fileTypeConfig.default;
  return config.icon;
}
